
package Proyecto;

import java.util.ArrayList;
import java.util.Date;


public class BusquedaPreferenteAmplitud {
    ArrayList<Nodo> arreglo=new ArrayList();
    String estado[][];
    int nodosCreados,nodosExpandidos;
    long tiempoInicio,duracion;
    public BusquedaPreferenteAmplitud(String[][] estado) {
        this.estado = estado;
        arreglo.add(0,new Nodo(estado,0,null,null,0));
        tiempoInicio=System.currentTimeMillis();        
    }

    public int RetornarNodosCreados()
    {
      return nodosCreados;
    }

    public int RetornarNodosExpandidos()
    {
      return nodosExpandidos;
    }
    
    public Nodo AlgoritmoBusquedaPreferenteAmplitud()
    {
        nodosCreados=0;
        nodosExpandidos=0;
        nodosCreados++;
        nodosExpandidos++;
        Nodo actual=arreglo.get(0);
        if(actual.Viabilidad())
        {
            while(!actual.EsMeta())
            {   
                //ArrayList hijos=actual.expandir();
                ArrayList hijos=actual.expandirOrdenExpansion();
                nodosExpandidos++;
                nodosCreados+=hijos.size();
                arreglo.addAll(hijos);
                arreglo.remove(actual);
                actual=arreglo.get(0);
    //            System.out.println();
    //            actual.ImprimirEstado();
    //            System.out.println();
    //            actual.ImprimirPosiciones();
            }
            duracion=System.currentTimeMillis()-tiempoInicio;         
            System.out.println("Duracion :"+duracion);
            System.out.println("Meta hallada =D");
            return actual;
        }else return null;
    }
    
    
    
    
    
    
}
